﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Vs_ChatGpt.Model
{

    public class MyConfigModel
    {
        /// <summary>
        /// 服务名称: OpenAI/Azure云
        /// </summary>
        public string serviceName { get; set; }

        /// <summary>
        /// 接口地址
        /// </summary>
        public string apiurl { get; set; }

        /// <summary>
        /// 验签key
        /// </summary>
        public string apikey { get; set; }

        /// <summary>
        /// 代理地址
        /// Azure云直接删除不添加就行
        /// </summary>
        public string proxy { get; set; }

        /// <summary>
        /// 最大的tokens
        /// 一般500基本够用了
        /// </summary>
        public string maxtoken { get; set; }

        /// <summary>
        /// 热度随机性
        /// 一般给0,越小越严谨,建议别超过0.3
        /// </summary>
        public string temperature { get; set; }

        /// <summary>
        /// 对话模型
        /// </summary>
        public string model { get; set; }

        /// <summary>
        /// 默认超时时间
        /// 30秒一般足够用了 除非特别大的一段代码
        /// </summary>
        public string timeout { get; set; }

        /// <summary>
        /// Prompt话术
        /// </summary>
        public PromptModel Prompt { get; set; }
    }

    /// <summary>
    /// 提示词
    /// </summary>
    public class PromptModel
    {
        /// <summary>
        /// 补全代码
        /// </summary>
        public string Complete { get; set; } = $"补全代码\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n只返回代码\r\n\r\n";

        /// <summary>
        /// 查找bug
        /// </summary>
        public string FindBug { get; set; } = $"查找代码错误\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n只返回代码错误说明和代码行号\r\n没有错误,直接返回\"代码没有错误\"\r\n\r\n";

        /// <summary>
        /// 修复bug
        /// </summary>
        public string RepairBug { get; set; } = $"修复代码错误\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n只返回代码\r\n\r\n";

        /// <summary>
        /// 压缩代码
        /// </summary>
        public string Optimize { get; set; } = $"优化压缩代码\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n只返回代码\r\n\r\n";
        
        /// <summary>
        /// 解释代码
        /// </summary>
        public string Explain { get; set; } = $"解释说明\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n只返回代码的简短解释说明\r\n要求: 每句话末尾增加换行符\r\n\r\n";

        /// <summary>
        /// 添加Summary注释
        /// </summary>
        public string AddSummary { get; set; } = $"任务:你是高级软件开发者\r\n角色:高级软件开发者\r\n编程语言:C#\r\n关键词:代码\r\n需求:写Summary说明注释,不需要返回代码块,只返回Summary结构和说明,中文回复\r\n格式示例:\r\n/// <summary>\r\n///\r\n/// </summary>\r\n/// <param name=“obj”></param>\r\n/// <returns></returns>\r\n\r\n代码";
        
        /// <summary>
        /// 添加单元测试
        /// </summary>
        public string AddTest { get; set; } = $"生成单元测试\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n只返回代码\r\n\r\n";
        
        /// <summary>
        /// 中英互译
        /// </summary>
        public string Translate { get; set; } = $"中英文互译,只返回译文结果:\r\n";
        
        /// <summary>
        /// 重构代码
        /// </summary>
        public string Refactoring { get; set; } = $"重构以下代码,并给出重构理由,尽量少使用类似字符+=消耗性能操作\r\n你是一个经验丰富的.NET高级开发人员,简体中文\r\n";

        /// <summary>
        /// 自定义1
        /// </summary>
        public string Custom1 { get; set; } = $"这个是自定义的选项, 你可以自己编写提示词Prompt来实现功能";

        /// <summary>
        /// 自定义2
        /// </summary>
        public string Custom2 { get; set; } = $"这个是自定义的选项, 你可以自己编写提示词Prompt来实现功能";

        /// <summary>
        /// 自定义3
        /// </summary>
        public string Custom3 { get; set; } = $"这个是自定义的选项, 你可以自己编写提示词Prompt来实现功能";
    }
}
